package com.tedu.shoot;

import com.tedu.shoot.img.Images;

import java.awt.image.BufferedImage;

/**
 * Date：2021年08月
 * Author：程Sir
 * 微信公众号：程Sir小课堂
 * Content:
 *    敌人类：小蜜蜂
 */
public class Bee extends FlyingObject implements Award {
    @Override
    public String toString() {
        return "Bee{" +
                "xSpeed=" + xSpeed +
                ", ySpeed=" + ySpeed +
                ", index=" + index +
                ", wdith=" + wdith +
                ", height=" + height +
                ", x=" + x +
                ", y=" + y +
                '}';
    }

    // 速度
    public int xSpeed;
    public int ySpeed;
    int index = 1;

    // 小蜜蜂的奖励类型
    public int awardType;

    public Bee(){
//        this.wdith = 60;
//        this.height= 43;
//        this.x = (int)(Math.random()*(512-this.wdith));
//        this.y = -this.height;
        super(60,43);
        // 小蜜蜂在被创建时，就已经确定好是奖励生命值还是奖励火力值
        awardType= (int)(Math.random()*2);
        xSpeed = 2;
        ySpeed = 1;
    }
    @Override
    public BufferedImage getImage() {
        // 游戏状态在开始运行的情况的下，应该是默认的第一张
        if (state == LIVE){
            // 如果小敌机是活着的，返回第一张图片
            return Images.beeImage[0];
        }else if(state == DEAD){
            // 当发生碰撞之后，图片要进行爆炸效果的图片切换 ： 4张图片进行一次遍历
            BufferedImage image = Images.beeImage[index++];
            if (index == Images.beeImage.length){ // 图片如果变量到了最后一张，那么就可以把当前的对象从敌人数组中移除了
                state = REMOVE;
            }
            return image;
        }
        return null;
    }

    @Override
    public void step() {
        this.x += xSpeed;
        this.y += ySpeed;
        // 判断是否要反向
        if(x>World.WIDTH-this.wdith || x<0){
//            xSpeed = -xSpeed
            xSpeed *= -1;
        }
    }

    @Override
    public boolean isOutBound() {
        if (this.y >= World.HEIGHT){
            return true;
        }
        return false;
    }

    @Override
    public int getType() {
//        /*
//            小蜜蜂在碰撞的一瞬间才能确定是：奖励火力值还是奖励生命值
//         */
//        awardType = (int)(Math.random()*2);
        return awardType;
    }
}
